package com.wannabuy.mobile.dao;

import java.io.InputStream;
import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
import java.util.List;

import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;

import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.reflect.TypeToken;
import com.wannabuy.mobile.model.Comprador;
import com.wannabuy.mobile.model.Grupo;
import com.wannabuy.mobile.model.Oferta;
import com.wannabuy.mobile.util.Constantes;
import com.wannabuy.mobile.util.Util;

public class DAOOferta implements RepositorioOferta {

	@Override
	public List<Oferta> listarOfertas(Grupo grupo) {
	
			List<Oferta> ret = new ArrayList<Oferta>();
			HttpClient httpcliente = new DefaultHttpClient();
			ArrayList<NameValuePair> postParameters;
			String respostadoBanco="";
			HttpPost httppost = new HttpPost(
					Constantes.enderecoBanco+"/grupo");
			postParameters = new ArrayList<NameValuePair>();
			GsonBuilder conversor = new GsonBuilder();
			conversor.setDateFormat("dd/MM/yyyy");
			postParameters.add(new BasicNameValuePair("grupo", conversor.create().toJson(grupo)));
			postParameters.add(new BasicNameValuePair("acao", "listarofertas"));
			try {
				httppost.setEntity(new UrlEncodedFormEntity(postParameters));
			} catch (UnsupportedEncodingException e) {
				e.printStackTrace();
			}
			
			HttpResponse resposta;

			try {
				resposta = httpcliente.execute(httppost);

				HttpEntity entidade = resposta.getEntity();

				InputStream dados;

				if (entidade != null) {
					dados = entidade.getContent();
					respostadoBanco = Util.getStringFromInputStream(dados);
				}
			} catch (Exception ex) {
				ex.printStackTrace();
			}
			
			//convertemos o objeto recebido em um comprador para o retorno
			
			
			try {
				TypeToken<List<Oferta>> listaTypeToken = new TypeToken<List<Oferta>>(){}; 
				ret = conversor.create().fromJson(respostadoBanco, listaTypeToken.getType());
			} catch (Exception e) {
				// TODO: handle exception
				e.printStackTrace();
			}
			
			return ret;
	}

	@Override
	public Oferta buscarOferta(Oferta oferta) {
		// TODO Auto-generated method stub
		return null;
	}
	
	

}
